futures-timer 0.4.0

Timeouts and intervals for futures.
Documentation

futures-timer

Build Status

Documentation

A library for working with timers, timeouts, and intervals with the futures crate.

# Cargo.toml
[dependencies]
futures-timer = "0.3"

An example of using a Delay is:

use std::time::Duration;

use futures::prelude::*;
use futures_timer::Delay;

async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
    Delay::new(Duration::from_secs(3))
        .map(|()| println!("printed after three seconds"))
        .await?;
}

And using an Interval:

use std::time::Duration;

use futures::prelude::*;
use futures_timer::Interval;

#[runtime::main]
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
    Interval::new(Duration::from_secs(4))
        .take(4)
        .for_each(|()| Ok(println!("printed after three seconds")))
        .await?;
}

Or timing out a future

use std::time::Duration;

use futures_timer::FutureExt;

async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
    // create a future that will take at most 3 seconds to resolve
    let future = long_running_future()
      .timeout(Duration::from_secs(3));
}

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.